package com.shoulder.boot.acl.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.shoulder.boot.acl.dto.*;
import com.shoulder.boot.acl.entity.User;
import com.shoulder.boot.acl.vo.AdminLoginVo;
import com.shoulder.boot.acl.vo.TenantUserVo;
import com.shoulder.boot.acl.vo.UserVo;
import com.shoulder.core.fetch.BaseIds;
import org.springframework.security.core.userdetails.UserDetails;

import java.util.List;

public interface UserService extends IService<User> {
    AdminLoginVo login(AdminLoginDTO loginRequest);

    UserDetails loadUser(String username);

    AdminLoginVo refresh(RefreshTokenDTO refreshTokenDTO);

    UserVo look(String id);

    List<User> looks(BaseIds<String> baseIds);

    void del(String id);

    void batchDel(BaseIds<String> baseIds);

    List<User> listQuery(UserQueryDTO queryDTO);

    Page<UserVo> pageQuery(UserQueryDTO queryDTO);

    void mod(UserModDTO modDTO);

    void add(UserAddDTO addDTO);
    void r2u(R2u r2u);

    List<UserVo> forList(UserQueryDTO queryDTO);

    TenantUserVo info();

    void switchStatus(String id);
}
